package com.candy.IO;

import java.io.*;

/**
 * @author donglin
 * @Title:
 * @类名: Test06
 * @date 2020/7/20
 */
public class Test06 {
    public static void main(String[] args) {
        test03();
    }

    /*/**
     * 方法描述:缓冲流：使用输入流读取一个文件内容到cpu中，然后使用输出流将内容写出到指定的外部文件中
     *
     */
    public static void test03() {
        //创建一个输入流对象
        try ( BufferedReader is=
                      new BufferedReader(
                new InputStreamReader(
                        new FileInputStream("F:\\java0720\\nsdJava\\candy.txt")));
              //创建一个输出流对象  资源需关闭
              //第二个参数  默认值是false，从头开始覆盖写；true，从末尾开始接着写
              BufferedWriter os=new BufferedWriter(
                      new OutputStreamWriter(
                              new FileOutputStream("F:\\java0720\\nsdJava\\candy03.txt",true)));)
        {
            //信息读取一整行
           String strMsg= is.readLine();
           //内容不为空继续读取，直到内容为空
           while (strMsg!=null){
               //将读入的文件内容写入文件
               os.write(strMsg);
               //换行
//               os.newLine();
               os.write("\n");
               System.out.println("ok");
               //继续读
               strMsg=is.readLine();
           }



        } catch (Exception e) {
            e.printStackTrace();
        }


    }



    /*/**
     * 方法描述:字符流：使用输入流读取一个文件内容到cpu中，然后使用输出流将内容写出到指定的外部文件中
     *
     */
    public static void test02() {
        //创建一个输入流对象
        try ( Reader is=new FileReader("F:\\java0720\\nsdJava\\candy.txt");
              //创建一个输出流对象  资源需关闭
              //第二个参数  默认值是false，从头开始覆盖写；true，从末尾开始接着写
              Writer os=new FileWriter("F:\\java0720\\nsdJava\\candy02.txt",true))
        {
            //用于读取字节流的字节数组
            char[] b=new char[1024];
            //将输入流中的内容读取到用于存储的字节数组中
            int len=is.read(b,0,1024);

            while (len!=-1){
                //使用输出流进行文件内容复制
                os.write(b,0,len);
                System.out.println("ok");
                //继续往下读
                len=is.read(b);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


    }

/*/**
 * 方法描述:字节流：使用输入流读取一个文件内容到cpu中，然后使用输出流将内容写出到指定的外部文件中
 *
*/
    public static void test01() {
        //创建一个输入流对象
        try ( InputStream is=new FileInputStream("F:\\java0720\\nsdJava\\candy.txt");
              //创建一个输出流对象  资源需关闭
              //第二个参数  默认值是false，从头开始覆盖写；true，从末尾开始接着写
              OutputStream os=new FileOutputStream("F:\\java0720\\nsdJava\\candy01.txt",true))
        {
            //用于读取字节流的字节数组
            byte[] b=new byte[1024];
            //将输入流中的内容读取到用于存储的字节数组中
            int len=is.read(b,0,1024);

            while (len!=-1){
                //使用输出流进行文件内容复制
                os.write(b,0,len);
                System.out.println("ok");
                //继续往下读
                len=is.read(b);
             }
       } catch (Exception e) {
            e.printStackTrace();
        }


    }
}
